package com.ib.algokit.history;
import java.io.Serializable;

import org.activequant.core.domainmodel.InstrumentSpecification;
import org.activequant.core.types.TimeStamp;

import com.ib.algokit.forex.ForexPairStates;

/**
* A TradeEvent subclass. Holds the following inherited variables:
* <ul>
* <li>id(Long)</li>
* <li>eventTimeStamp(TimeStamp)</li>
* <li>message(String)</li>
* <li>instrumentSpecification(InstrumentSpecification)</li>
* </ul>
*  @author dmisev
*/
public final class SignalDirectionChangeEvent extends TradeEvent implements Serializable { 

	private static final long serialVersionUID = -1L;
	/**
	 * private ForexPairStates forexPairStates=null;
	 */
	private ForexPairStates forexPairStates=null;
	/**
	 * Creates empty order accept event.<br/>
	 * An empty SignalDirectionChangeEvent(TradeEvent subclass) constructor
	 */
	public SignalDirectionChangeEvent() { }
	/**
	 * Creates populated order accept event.<br/>
	 * constructs an SignalDirectionChangeEvent(TradeEvent subclass) using the given stamp(TimeStamp) and message(String) to set its
	 * inherited eventTimeStamp(TimeStamp) and message(String).<br/>
	 * Sets its associated instrumentSpecification(InstrumentSpecification) with the given instrumentSpecification(InstrumentSpecification)
	 * @param stamp time stamp.
	 * @param message message.
	 * @param instrumentSpecification the spec for which this event happened
	 */
	public SignalDirectionChangeEvent(TimeStamp stamp, String message, InstrumentSpecification instrumentSpecification, ForexPairStates forexPairStates) {
		super(stamp, message, instrumentSpecification);
		this.forexPairStates=forexPairStates;
	}
	/**
	 * returns a String in the form "SignalDirectionChangeEvent: eventTimeStamp=${eventTimeStamp}, message=${message}, spec=${instrumentSpecification}"
	 */
	public String toString() {
		return "SignalDirectionChangeEvent: eventTimeStamp=" + getEventTimeStamp() + ", message=" + getMessage()+ ", spec=" + getInstrumentSpecification(); 
	}
}
